home *** CD-ROM | disk | FTP | other *** search
- R E S A U C E
- =================================
- geschrieben in GFA-Basic 2.02
- von Tilman Neumann 1990
-
-
- --------------- Allgemeine Informationen zum Programm ---------------------
-
- 'RESAUCE' ist ein Utility-Paket, daß Programmierern beim Umgang mit
- GEM-Resourcen etwas mehr Komfort bringen soll.
- Der gesamte Funktionsumfang von 'RESAUCE' steht nur den den GFA-Basic-
- Programmierern offen, da einige Funktionen Sourcecode für diese Sprache
- erzeugen.
-
- 'RESAUCE' wurde aus folgenden Gründen geschrieben:
-
- 1.) Ich wußte noch nicht, wie man RSC-Dateien per GEM in eigene
- Programme einbindet und wollte mir dieses durch RESAUCE
- erleichtern.
- 2.) Ich wollte direkter als gewöhnlich auf die Resourcen zugreifen
- können, da dann Manipulationen leichter durchzuführen sind.
- 3.) Es nervte mich, daß die Resourcen als separate Dateien
- auf dem gleichen Pfad wie das Hauptprogramm vorliegen müssen
- und beim Kopieren leicht vergessen werden können.
-
-
-
- ------------------- Funktionsgruppen von 'RESAUCE' ------------------------
-
- 1.) Speicher-Monitor.
- Mit dem Speichermonitor kann man ein bißchen im RAM und ROM rumstöbern.
- Er ist jedoch ziemlich primitiv und enthält keine komplexeren Befehle.
- ACHTUNG: Fehlerhafte Zugriffe werden nicht abgefangen !!
-
- 2.) Datei-Monitor zur Edierung von Dateien beliebigen Formats.
-
- 3.) Analyse und Manipulation von RSC-Dateien.
- Alle Routinen im Manipulations-Menü habe ich ursprünglich geschrieben,
- weil deren Funktionen auch von der AES-Routine 'rsrc_load' ausgeführt
- werden, die ich nachgebildet habe (wird auf Wunsch beim Umwandeln der
- RSC-Datei in GFA-Basic-DATAs miterzeugt !). Mit den Analyse-Funktionen
- konnte ich so problemlos überprüfen, ob die Routinen funktionieren.
- Da seit der Version 1.2 in den Analyse-Funktionen stets die absolute
- und relative Adresse von Strukturen usw. angegeben werden, hat
- zumindest die Funktion zur Adreß-Umwandlung keinen großen Wert mehr,
- da man die Veränderungen in 'RESAUCE' nicht mehr erkennen kann. Ich
- habe die Routine der Komplettheit halber aber dringelassen.
-
- 4.) Optimierung von RSC-Dateien.
- Diese Funktion verkürzt RSC-Dateien, indem doppelte Strings und Bilder
- gelöscht werden und deren Zeiger entsprechend umgesetzt werden.
- Die Optimierung bringt im Schnitt ca. 10%, die Funktionstüchtigkeit
- des Resultats zu 99% gewährleistet.
- Man könnte zwar durch das Löschen identischer Strukturen noch eine
- weitere Optimierung erreichen; dies habe ich jedoch nicht eingebaut, da
- der Mehraufwand erheblich wäre (ca. 20 kB !) und die weitere Verkürzung
- nicht mehr so viel bringen würde.
-
- 5.) Umwandlung von RSC-Dateien in GFA-Basic.
- Die DATAs werden an eine Routine angehängt, die die DATAs in ein
- reserviertes Speicherstück lädt und diese Resource dann wie die AES-
- Funktion 'rsrc_load' initialisiert.
-
- 6.) Analyse von Definitionsdateien.
- Diese Dateien enthalten die Namen der Variablen, die man den Objekten
- und Bäumen im RCS gegeben hat.
- Man kann solche Dateien von 'RESCAUCE' auswerten und auch in GFA-Basic
- umwandeln lassen.
- Übrigens: Def.-Dateien mit der Endung '*.DEF' sind zum Kuma-Format
- kompatibel. Man muß also nur die Extension in '*.RSD' umbenennen und
- kann die Def.-Datei dann mit 'RESAUCE' laden.
-
-
- ------------- Differenzierte Beschreibung aller Funktionen ----------------
-
- 1. Über RESAUCE: Kurzinfos über dieses Programm
- 2. Lade-Menü
- 1. RSC-Datei unverändert laden:
- Über diesen Menüpunkt wird eine RSC-Datei in den Speicher
- geladen. Der nötige Speicher wird mit GEMDOS 'Malloc'
- reserviert, um jeden Zugriff anderer Programme oder des GEM
- auf diese Datei zu verhindern. Die geladene Datei wird in
- keinster Weise verändert. Alle folgenden Funktionen beziehen
- sich auf diese Datei, bis eine neue geladen oder RESAUCE
- beendet wird.
- ACHTUNG: Es wird nicht überprüft, ob der Benutzer wirklich
- eine RSC-Datei geladen hat! Das Laden anderer
- Dateien über diesen Menüpunkt führt mit Sicherheit
- zu schweren Fehlern, da die Strukturen der Datei
- überprüft und sogar geändert werden können.
- Zum Laden von Nicht-RSC-Dateien benutzen Sie bitte
- den Menüpunkt 2.5!
- 2. RSC-Datei mittels AES 'Rsrc_load' laden:
- Durch diesen Menüpunkt wird eine RSC-Datei mittels der AES-
- Funktion 'Rsrc_load' geladen. Diese führt folgende Tätig-
- keiten durch: - Speicher reservieren
- - RSC-Datei per AES 'shel_write' suchen
- - RSC-Datei in reservierten Speicher laden
- - alle Objektkoordinaten mittels AES
- 'rsrc_obfix' umrechnen
- - Zeiger aller Strukturen von relativer auf
- absolute Adressierung umrechnen
- - Zeiger in der Liste von Zeigern auf die
- Objektbäume umrechnen
- - einige Werte im AES-internen GLOBAL[]-Feld
- setzen
- ACHTUNG: Der RSC-Header wird N I E M A L S verändert !!
- 3. Definitionsdatei im Format von Kuma (*.RSD) laden:
- Definitionsdateien sind Dateien, in denen das RCS zu einer RSC-
- Datei die vom Programmierer angegebenen Variablennamen der Bäume/
- Objekte abspeichert.
- Mit 'RESAUCE' ist es möglich, solche Dateien zwischen den Formaten
- von Kuma und DRI zu konvertieren. Dadurch kann man mit beiden RCS-
- Programmen an derselben RSC-Datei arbeiten.
- Zur Konvertierung muß man die Definitionsdatei nur laden und im
- gewünschten Format wieder abspeichern.
- ANMERKUNG: Es gibt auch noch Definitions-Dateien mit der Extension
- *.DEF. Diese sind vom alten DRI-RCS. Ihr Format ist
- mit dem Kuma-Format fast identisch, so daß diese bei
- diesen Dateien nur die Extension in *.RSD umbenannt
- werden muß.
- Dies ist auch äußerst sinnvoll, da sich die Extension
- *.DEF zum Standard für Modula 2-Definitionsmodule ent-
- wickelt hat.
- 4. Definitionsdatei im DRI-Format laden:
- Siehe unter 2.3 !
- 5. Beliebige Datei laden:
- Eine Datei wird in per GEMDOS 'Malloc' reservierten
- Speicher geladen. Diese Datei kann angezeigt, editiert und
- abgespeichert werden, letzteres auch als DATAs für Basic.
- 3. Analyse-Menü
- 1. Speichermonitor:
- Theoretisch kann man sich hiermit den gesamten Adreßraum des ST
- anzeigen lassen. Praktisch sind jedoch nur zugänglich:
- - RAM-Adreßbereich: $0 - $3FFFFF
- - ROM-Adreßbereich: $FA0000 - $FEFFFF (normalerweise !)
- Folgende Tasten sind belegt:
- - '0'-'9' und 'A'-'F': Eingabe eines HEX-Bytes an der
- aktuellen Cursorposition
- - 'S': Ab Adresse ... anzeigen.
- Sie können die Adresse hexadezimal ('$' am Anfang)
- oder dezimal eingeben.
- - 'M': Schreib-Modus: Es gibt zwei Schreib-Modi: Im Normal-
- Modus kann man bestimmte Adressen, die System-
- variablen, nur lesen und nicht beschreiben. Das
- Beschreiben ist nur im Supervisor-Modus erlaubt.
- - Pfeil hoch, links, rechts, runter: Cursor-Steuerung.
- - Ctrl Pfeil links, rechts: Cursor an Seitenrand.
- - Ctrl Pfeil hoch, runter: Seite zeilenweise scrollen.
- ACHTUNG: Fehlerhafte Zugriffe werden nicht abgefangen !!
- 2. Dateimonitor:
- Hiermit können Sie sich Dateien anzeigen lassen und Änderungen
- vornehmen.
- Die Steuerung erfolgt wie im Speicher-Monitor.
- 3. RSC-Header anzeigen:
- Der RSC-Header wird vollständig ausgewertet. Es kann jedoch
- vorkommen, daß die Daten nicht der Norm entsprechen, z.B.
- setzt Megamax Modula's RCS immer das 1. Word auf 1 !!
- Durch diesen Aufruf werden gleichzeitig einige wichtige
- Variablen initialisiert, weshalb er nach jedem Laden einer
- RSC-Datei automatisch vorkommt.
- 4. Objektbaum in logischer Reihenfolge anzeigen:
- Vom ersten Objekt eines beliebigen Baums ausgehend, wird
- dieser in seiner hierarchischen Verknüpfung angezeigt.
- Wenn im jeweiligen Objekt vorhanden, kann auch eine
- weitere Struktur angezeigt werden (String, TEDINFO, BITBLK,
- ICONBLK oder USERBLK).
- Erklärung der Objektdaten:
- - Wenn neben der Objektart ein X und eine Zahl stehen, bedeutet
- das, daß der Objekttyp im Highbyte die angegebene Zahl als
- Erweiterung enthält.
- - Anstelle des Zeigers kann das Objekt auch eine Erläuterung
- des Aussehens des Objekts enthalten (OBJ+12). Hierbei gilt:
- DRi. = Dicke des Rahmens (innen)
- DRa. = Dicke des Rahmens (außen)
- RF. = Rahmenfarbe
- TF. = Textfarbe
- T = transparent
- D = deckend
- FF. = Füllfarbe
- IF. = Innenfarbe
- Der Rest erklärt sich von selbst.
- 5. Objekte in physikalischer Reihenfolge anzeigen:
- Die Objekte werden in der Reihenfolge angezeigt, in der sie
- im Objektfeld vorliegen. Dazu wird zu jedem Objekt die
- logische Baum- und Objektnummer ausgerechnet.
- Auch hier kann man sich die weiteren Strukturen anzeigen
- lassen.
- 6. Objektfeld durchsuchen:
- Hiermit kann man das gesamte Objektfeld entweder nach Nullzeigern
- oder nach Objekten einer bestimmten Art durchsuchen lassen.
- Wenn man ein Objekt gefunden hat, daß das Suchkriterium erfüllt,
- wird dieses automatisch angezeigt. Dann hat man noch die Wahl, ob
- man sich eine evtl. vorhandene zum Objekt gehörende weitere
- Struktur anzeigen lassen möchte oder ob das nächste Objekt dieses
- Typs gesucht werden soll.
- 7. Freie Strings anzeigen:
- Hiermit kann man sich alle freien Strings, die die Resource ent-
- hält, hintereinander anzeigen lassen.
- Bei freien Strings handelt es sich meistens um die Texte von
- Alertboxen.
- 8. Freie Images anzeigen:
- Hiermit kann man sich die BITBLK-Strukturen der freien Images
- anzeigen lassen.
- 9. Def.-Datei anzeigen:
- Hiermit kann man sich alle Variablen anzeigen lassen. Weiterhin
- wird bei Objekten auf den Namen des Baums, zu dem das Objekt
- gehört, angegeben.
- 10. GLOBAL[]-Feld anzeigen:
- Man kann sich hiermit das GLOBAL[]-Feld anzeigen lassen.
- Dieses Feld ist eine Struktur, in der sich das AES von
- jedem aktiven Prozeß wichtige Daten merkt (da der ST kein
- Multitasking beherrscht, gibts nur eine Struktur davon!).
- 4. RSC-Manipulations-Menü
- 1. GLOBAL[]-Feld setzen:
- Hiermit kann man die Werte in das AES-interne GLOBAL[]-Feld eintra-
- gen, die auch beim Laden einer Datei mit AES 'rsrc_load' gesetzt
- werden: Länge und Adresse des reservierten Bereichs, Anfangsadresse
- der Objektbaum-Tabelle.
- 2. Objektkoordinaten umrechnen:
- Rechnet die Koordinaten, an denen das Objekt positioniert
- werden soll, von Zeichen- in Pixelauflösung um.
- Bei den übrigen Strukturen (TEDINFO usw.) liegen die
- Koordinaten schon in Pixel vor.
- 3. Zeiger der RSC-Datei umrechnen:
- In der unveränderten RSC-Datei haben alle Adressen Wordlänge und
- beziehen sich auf den Anfang der RSC-Datei im Speicher. Mit diesem
- Menüpunkt werden alle Adressen auf absolute Longwerte umgerechnet.
- Umgerechnet werden alle Adressen im Objektfeld, die Adressen der
- freien Images und Strings sowie alle Adressen aus der Objketbaum-
- Tabelle.
- 5. Optimierung von RSC-Dateien
- Hiermit werden RSC-Dateien durch Löschen doppelter Strings und
- Bilder sowie dem Umsetzen deren Zeiger verkürzt. Die Optimierung
- bringt im Schnitt ca. 10%, die Funktionstüchtigkeit des Resultats
- bleibt zu 99% (oder gar 100% ?) gewährleistet.
- Man könnte zwar durch das Löschen identischer Strukturen noch eine
- weitere Optimierung erreichen; dies habe ich jedoch nicht
- eingebaut, da der Mehraufwand erheblich wäre (ca. 20 kB Code !)
- und die weitere Verkürzung nicht mehr so viel bringen würde.
- WICHTIG: Wenn man in der Resource nur Platz reservieren möchte, um
- dort zum Beispiel Rechenergebnisse zur späteren Ausgabe
- abzulegen, dann darf dieser Platzhalter logischerweise
- nicht mitoptimiert werden.
- Aus diesem Grunde werden von RESAUCE Strings, die aus
- lauter Neunen bestehen, nicht mitoptimiert !!
- 6. Speicher-Menü
- 1. Datei speichern unter ...
- Die Datei wird in dem Format, in dem sie vorlag, wieder
- abgespeichert. Änderungen werden übernommen.
- 2-4. Datei als DATAs für GFA-Basic abspeichern:
- Die ASCII-Werte der einzelnen Bytes werden als DATAs
- gespeichert.
- Hierbei gibt es verschiedene Stufen, wie groß die dazuge-
- hörigen Routinen ausfallen:
- 2. nur die DATAs inklusive einer Routine, die die
- DATAs in ein Speicherstück lädt.
- 3. Dazu werden die Adressen einer RSC-Datei umge-
- rechnet und das AES-Global[]-Feld ergänzt.
- Diese Auswahl ist nur sinnvoll, wenn die RSC-
- Datei normal geladen wurde und die Koordinaten
- schon umgerechnet wurden. In diesem Falle läuft
- die Datei problemlos in der Auflösung, die bei
- der Behandlung der Resource eingestellt war !!
- 4. Die Routine rechnet auch noch die Koordinaten
- um, so daß die Resource in allen Auflösungen
- lauffähig ist. Hierzu darf die Datei noch nicht
- mit AES-Mitteln manipuliert worden sein.
- 5. Definitionsdatei im Kuma-Format speichern:
- Wenn man eine Definitionsdatei geladen hat, kann man diese hiermit
- im Kuma-Format, also mit der Endung '*.RSD', abspeichern.
- Siehe 2.3 !!
- 6. Definitionsdatei im DRI-Format speichern:
- Wenn man eine Definitionsdatei geladen hat, kann man diese hiermit
- im Format des RCS V2.0 von Digital Research, also mit der Endung
- '*.RSD', abspeichern.
- Siehe 2.3 !!
- Esc. Ende des Programms !!
-
-
- --------------------------- Eine kleine Bitte -----------------------------
-
- Falls Sie Fehler oder Verbesserungsmöglichkeiten gefunden haben, schicken
- Sie diese bitte an die folgende (meine) Adresse:
-
- Tilman Neumann
- Zum Walde 11
- 3155 Edemissen
-
-
- Wenn Sie eine Diskette plus frankiertem Rückumschlag mitschicken, gibt's
- möglichst schnell die verbesserte Version zurück.
-
- Also denne, viel Spaß bei der Benutzung.
-
-
-